草庐IT

c++ - DrawText VS TextOut Win32

全部标签

c - 如何在 ring0(内核模式)中使用 winapi 函数?

我无法在驱动程序中调用FileTimeToSystemTime()方法。错误是:错误C4013:“FileTimeToSystemTime”未定义;假设extern返回int。我也不能包含windows.h,因为我已经包含了ntddk.h,它会导致很多错误。如果我在header中将其声明为BOOLFileTimeToSystemTime(INconstPFILETIME,OUTPSYSTEMTIME);我会收到下一个错误:错误C2061:语法错误:标识符“FileTimeToSystemTime”错误C2059:语法错误:';'错误C2059:语法错误:“类型”错误C4013:“Fil

c - 了解 C 中的缓冲

我真的很难理解缓冲的深度,尤其是在C编程中,我在这个主题上搜索了很长时间,但直到现在还没有找到令人满意的东西。我会更具体一点:我确实理解它背后的概念(即不同硬件设备的操作协调和最小化这些设备的速度差异)但我希望能更全面地解释这些和其他潜在的缓冲原因(我的意思是完整的)越长越深越好)给出一些具体的例子来说明缓冲是如何在I/O流中实现的。其他问题是我注意到我的程序没有遵循缓冲区刷新中的一些规则,这听起来很奇怪,就像下面的简单片段:#includeintmain(void){FILE*fp=fopen("hallo.txt","w");fputc('A',fp);getchar();fput

c - 如何区分16位MZ和32位MZ

我需要区分32位PE和16位DOSMZ。正确的做法是什么?我可以使用启发式方法,例如查找PEheader,但我觉得它不一定是确定性的 最佳答案 所有DOS风格的可执行文件都有一个“MZ”作为前两个字节。要识别MSDOS可执行文件与众多其他变体,最好的办法似乎是读取文件中偏移量0x0018处重定位表的位置,如果它大于0x0040(进入文件),则它不仅仅是普通的DOS.为了明确地将可执行文件标识为“PE”可执行文件,在文件中的偏移量0x003C处有一个指针。这是文件中的偏移量,将包含字节“PE”和两个空值。其他MSDOS的“MZ”变体将

windows - Visual Studio 在 Windows 7 上将 WINVER/_WIN32_WINNT 设置为 Windows 8?

我正在使用VisualStudio2012在Windows7x64上执行一些测试。看起来Microsoft的工具链正在将_WIN32_WINNT设置为0x602(_WIN32_WINNT_WIN8).运行我们的测试程序导致TheprocedureentrypointGetOverlappedResultExcouldnotbelocatedinthedynamiclinklibraryKERNEL32.dll:我有两个问题。首先,出于病态的好奇,为什么Microsoft将_WIN32_WINNT设置为对执行环境无效的值?我能理解用户是否想要这样做,但微软不行,因为它会破坏一切(q.v.

c - PostMessage 似乎不起作用?

我正在尝试学习如何使用和接收原始输入消息,因此我设计了以下程序来测试我到目前为止的理解...当我收到输入消息时,我尝试更改显示的字符串并在队列中放置一个新的WM_PAINT消息。但是这条消息似乎没有被调用。只有当我调整窗口大小时,文本才会显示不同。为什么WM_PAINT消息根本没有得到处理,直到我调整窗口大小?#define_WIN32_WINNT0x501#include#include#include#includeLRESULTCALLBACKWinProcedure(HWNDhwnd,UINTmsg,WPARAMwparam,LPARAMlparam);intWinMain(H

c++ - 将 win32 代码 (windows.h) 移植到 linux

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭10年前。我正在开发一个C++项目,其中有一堆VisualStudio生成的项目文件,我想将它们移植到Linux。我本质上是在Windows上的多个文件中使用windows.h头文件。现在,我不确定,因为明确不存在linux.h文件(如果存在,请指导我在哪里查看)。在linux上,我使用EclipseCDT进行开发。关于它在Linux上如何工作,我有两个想法,但我希望您的输入知道正确的方向是什么:(1)删

c++ - 如何禁用 win32 'interface' 宏?

我在这里绝对疯了。我正在Windows上进行一些C++开发,我有一个名为“interface”的命名空间:namespacegd{namespaceinterface{}}//endnamespace但是,无论我包含“Windows.h”还是“Wtypes.h”,都会包含一个名为“objbase.h”的文件,其中包含一个名为“interface”的宏。该宏不允许我使用命名空间名称。Win32API中是否有禁用接口(interface)宏定义的功能?如果没有,有人可以想出一个聪明的解决方法来禁用它,而不需要对我的代码库进行太多大规模更改吗? 最佳答案

c - 使用 gcc 编译 win32 项目时如何链接到库?

我正在尝试在Win7上使用gcc编译一个基本的hellowordwinform应用程序。代码是这样的:/*WINHELLO.C"Hello,world!",Win32style.*/#includeLRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);/*WinMain(),ourentrypoint*/intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRszCmdLine,intiCmdShow){staticcharszAppName[]="winhello";HW

c++ - 如何检测隐藏进程

想知道“ProcessExplorer”或“ComboFix”等应用程序如何检测隐藏进程???我假设这必须用C或C++完成。即使在.NET中也很容易访问进程列表,但这并不总是准确的,我知道根工具包可以从任务管理器中隐藏自己。是通过内存访问和IO吗?好奇是否有人知道这是如何实现的。 最佳答案 这个问题无法回答。这取决于该过程最初是如何隐藏的。例如,有人可以通过向HookEnumProcesses、Process32Next等的所有进程以及与进程枚举相关的所有其他API注入(inject)用户模式​​DLL来隐藏进程。这将被跳过钩子(H

c++ - 我必须在 VS 2008 中使用 "Visual"C++ 吗?

我是VisualStudio2008(.NETFramework3.5)的新手,正在开发Windows窗体应用程序。启动IDE,新建项目的唯一选项在类别下:视觉基础VisualC#VisualC++我做了VisualC++->CLR->WindowsFormsApplication但是,模板代码在“VisualC++”语法中。如何使用VisualStudio2008使用普通C/C++创建新的GUI项目?请注意,我上次这样做是在VisualStudioC++6.0中使用MFC如果我遗漏了基本原则,请解释。谢谢!示例:http://msdn.microsoft.com/en-us/libr